/* Vue.js 的插件应该暴露一个 install 方法。
这个方法的第一个参数是 Vue 构造器，
第二个参数是一个可选的选项对象 */
import axios from 'axios'
import Vue from 'vue'
import { Loading } from 'element-ui';
let vm = new Vue()
let loadingInstance = Loading.service({    
  lock: true,
  text: 'Loading',
  spinner: 'el-icon-loading',
  background: 'rgba(0, 0, 0, 0.7)',
  target:document.querySelector('.main')});
const MyHttpServe = {}
MyHttpServe.install = (Vue) => {
  const http = axios.create({
    baseURL: 'http://127.0.0.1:8888/api/private/v1/'
  })
  // axios拦截 对token进行拦截
  http.interceptors.request.use(function (config) {
    const token = localStorage.getItem('token')
    // config就是我们的axios请求
    if (token) config.headers.Authorization = token
    // loading效果
     loadingInstance
    return config
  }, function (error) {
    return Promise.reject(error)
  })

  http.interceptors.response.use(function (response) {
    vm.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
      loadingInstance.close();
    });
    return response
  }, function (error) {
    return Promise.reject(error)
  })

  Vue.prototype.$http = http
}

export default MyHttpServe
